/* 
    做法：
        1. 确认要提炼的表达式没有副作用；
        2. 声明一个不可修改的变量，把你想要提炼的表达式复制一份，用其结果为这个变量赋值；
        3. 用这个新变量取代原来的表达式；
        4. 测试。
*/

function price(order){
    // price is base price - quantity discount + shipping
    return order.quantity * order.itemPrice - 
        Math.max(0, order.quantity -500) * order.itemPrice * 0.05 +
        Math.min(order.quantity * order.itemPrice * 0.1,100);
}

/**************************************************************** */

function price(order){
    // price is base price - quantity discount + shipping
    const basePrice = order.quantity * order.itemPrice;
    const quantityDiscount = Math.max(0, order.quantity -500) * order.itemPrice * 0.05;
    const shipping = Math.min(basePrice * 0.1,100);
    
    return basePrice - quantityDiscount + shipping;
}

